<%-- 
    Document   : procesar_url
    Created on : 26-nov-2013, 15:50:42
    Author     : Roberto
--%>

<%@page import="java.util.Calendar"%>
<%@page import="java.util.GregorianCalendar"%>
<%@page import="GestorBDatos.Reset"%>
<%@page import="GestorBDatos.ResetJpaController"%>
<%@page import="URLRandom.URLRandom"%>
<%@page import="GestorBDatos.Usuario"%>
<%@page import="GestorBDatos.UsuarioJpaController"%>
<%@page import="javax.persistence.Persistence"%>
<%@page import="javax.persistence.EntityManagerFactory"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="es">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Seguridad informatica</title>
        <script language="JavaScript" src="js/datosajax.js" type="text/javascript" ></script>
        <link rel="stylesheet" href="css/bootstrap.css">
        <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </head>
    <body>
        <%
            String usuario = request.getParameter("login");

            if (usuario != null && !usuario.equals("")) {
                EntityManagerFactory emf = Persistence.createEntityManagerFactory("Seguridad_InformaticaPU");
                UsuarioJpaController userController = new UsuarioJpaController(emf);
                Usuario user = userController.findUsuario(usuario);

                if (user != null) {
                    if (user.getDadoAlta().equals("1")) {
                        
                        ResetJpaController resetController = new ResetJpaController(emf);
                        //Comprobacion para ver que el usuario no habia pedido un reset.
                        Reset comprobacionReset = resetController.findReset(user.getLogin());
                        GregorianCalendar fechaActual = new GregorianCalendar();
                        
                        if (comprobacionReset == null) {
                            //Generamos la URL
                            URLRandom generadorURL = new URLRandom();
                            String URL = generadorURL.generarURL(user.getLogin());
                            //Metemos la URL a la base de datos
                            Reset resetURL = new Reset(user.getLogin(), URL, fechaActual.getTime());
                            resetController.create(resetURL);
                            //Mandamos el correo con la URL
                            boolean mandado = false;
                            mandado = generadorURL.mandarURL(URL, user);
                            if (mandado) {
                                response.sendRedirect("Pantalla_Email_Mandado.jsp");
                            } else {
                                response.sendRedirect("Pantalla_Email_No_Mandado.jsp");
                            }
                            
                        } else {

                            GregorianCalendar fechaURL = new GregorianCalendar();
                            fechaURL.setTime(comprobacionReset.getHora());
                            long diff = fechaActual.getTimeInMillis() - fechaURL.getTimeInMillis();
                            // calcular la diferencia en horas
                            long diffHours = diff / (60 * 60 * 1000);
                            //Si ha pasado el tiempo limite manda URL nueva
                            if(diffHours >= 1) {
                                //Destruimos la URL invalida
                                resetController.destroy(comprobacionReset.getLogin());
                                //Generamos la URL
                                URLRandom generadorURL = new URLRandom();
                                String URL = generadorURL.generarURL(user.getLogin());
                                //Metemos la URL a la base de datos
                                Reset resetURL = new Reset(user.getLogin(), URL, fechaActual.getTime());
                                resetController.create(resetURL);
                                //Mandamos el correo con la URL
                                boolean mandado = generadorURL.mandarURL(URL, user);
                                
                                if (mandado) {
                                    response.sendRedirect("Pantalla_Email_Mandado.jsp");
                                } else {
                                    response.sendRedirect("Pantalla_Email_No_Mandado.jsp");
                                }
                            //Si no ha pasado mostrar este mensaje o boton para remandar
                            } else {
                                session.setAttribute("reset", comprobacionReset);
                                session.setAttribute("user", user);
                                
                                %>


                                <div class="container">
                                    <div class="jumbotron">
                                        <div class="container">
                                            <h1>Ya te hemos mandado un email</h1>
                                            <p>Por favor revisa tu correo.</p>
                                        </div>
                                    </div>
                                    <p>
                                        Si deseas que te reenviemos el correo, haz click <a href="#" id="remandarURL" data-toggle="modal" data-keyboard="false" data-backdrop="static" data-target="#myModal" onclick="mandarCorreo(divcontenido,botonVolver,myModalLabel)">aquí</a>
                                    </p>
                                    <p>
                                        Si deseas volver a la pantalla principal, haz click <a href="index.jsp">aquí</a>
                                    </p>
                                </div>
                                
                                <!-- Modal -->
                                <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                                  <div class="modal-dialog">
                                    <div class="modal-content">
                                      <div class="modal-header">
                                        <h4 class="modal-title" id="myModalLabel">Correo</h4>
                                      </div>
                                      <div class="modal-body" id="divcontenido">
                                      </div>
                                      <div class="modal-footer">
                                              <button id="botonVolver" type="button" class="btn btn-primary" data-dismiss="modal" >Volver</button>
                                      </div>
                                    </div><!-- /.modal-content -->
                                  </div><!-- /.modal-dialog -->
                                </div><!-- /.modal -->
                                
                                
                                <%
                            }
                        }
                    } else {
                        response.sendRedirect("Pantalla_Login_Reset_Pass.jsp?error=3");
                    }
                } else {
                    response.sendRedirect("Pantalla_Login_Reset_Pass.jsp?error=1");
                }

            } else {
                response.sendRedirect("Pantalla_Login_Reset_Pass.jsp?error=2");
            }
        %>

    </body>
</html>
